package com.qjz.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public final class FileOperate {


	/**
	 * 获取文件输出流
	 * 
	 * @param filePath
	 *            文件存储路径
	 * @return FileInputStream 文件输出流
	 * @throws FileNotFoundException
	 *             找不到文件异常
	 */
	public static FileInputStream getFileInputStraem(String filePath)
			throws FileNotFoundException {
		File inpuFile = new File(getDir("saveDir"), filePath);

		return new FileInputStream(inpuFile);
	}

	/**
	 * 转存文件
	 * 
	 * @param oldFile
	 *            源文件
	 * @param newFile
	 *            新文件
	 * @throws IOException
	 *             IOException
	 */
	private static void saveFile(final File oldFile, final File newFile)
			throws IOException {
		// 如果源文件和目标文件位置相同,不拷贝文件
		if (null != oldFile && null != newFile
				&& oldFile.getAbsolutePath().equals(newFile.getAbsolutePath())) {
			return;
		}
		// 目标文件是否存在，不存在创建目录和文件
		if (newFile != null && !newFile.exists()) {
			newFile.getParentFile().mkdirs();
			newFile.createNewFile();
		}
		FileInputStream fis = new FileInputStream(oldFile);
		FileOutputStream fos = new FileOutputStream(newFile);
		// 标示读取的长度
		int byteread = 0;
		byte[] pool = new byte[1024];
		while ((byteread = fis.read(pool)) != -1) {
			fos.write(pool, 0, byteread);
		}
		fos.flush();
		fos.close();
		fis.close();
	}

	/**
	 * 获取目录
	 * 
	 * @param key
	 *            目录key
	 * @return 存储目录，如果获取目录为空，则设置为发布路径
	 */
	public static String getDir(String key) {
		FileOperate f = new FileOperate();
		String path = f.getClass().getClassLoader().getResource("/").getPath().substring(1);
		path = path.substring(0,path.indexOf("/WEB-INF"));
		return path;
	}

	/**
	 * 删除相对文件路径下的附件
	 * 
	 * @param filePath
	 *            附件的相对文件路径
	 * @return 删除是否成功(true:成功;false失败)
	 */
	public static synchronized boolean deleteFile(String filePath) {
		// 生成附件文件
		File file = new File(getDir("saveDir"), filePath);

		if (file.exists()) {
			// 删除附件
			file.delete();
			return true;
		}
		return false;
	}

	private FileOperate() {
	}
}
